#include <boost/signals2.hpp>
#include <iostream>

// 定义一个信号，传递一个int参数
typedef boost::signals2::signal<void (int)> SignalType;

// 槽函数：打印一个数字
void printNumber(int x) {
    std::cout << "Received: " << x << std::endl;
}

// 槽函数：打印数字的平方
void printSquare(int x) {
    std::cout << "Square: " << x * x << std::endl;
}

int main() {
    // 创建一个信号对象
    SignalType mySignal;

    // 连接多个槽到这个信号
    mySignal.connect(&printNumber);
    mySignal.connect(&printSquare);

    // 触发信号，调用所有连接的槽，传递数字20
    mySignal(20);

    return 0;
}